package com.tian.view.draw.shader

import android.graphics.Shader
import android.view.ViewGroup
import com.tian.util.view.DisplayUtil
import com.tian.view.common.BaseScrollFragment
import com.tian.view.databinding.ScrollLinearLayoutBinding

/**
 * @author tiansongtao
 * @date 2023/1/5 11:00
 *
 *
 * Shader的填充模式：当图片小于view大小时需要填充多余的空间
 *  [Shader.TileMode.MIRROR]: 重复使用镜像模式来填充多余空间
 *  [Shader.TileMode.REPEAT]: 重复原图填充多余空间
 *  [Shader.TileMode.CLAMP]: 用图像边缘彩色来填充多余空间
 * 注意：填充总是先沿Y轴填充后沿X轴填充
 *
 * 限制范围绘制，可以看到只显示了原来的部分内容，可见shader总是从
 * view的左上角开始绘制的。
 *
 */
class DrawShaderFragment : BaseScrollFragment() {

    override fun initView(b: ScrollLinearLayoutBinding) {
        b.llParent.addView(
                BitmapShaderView(requireContext()).apply {
                    layoutParams = ViewGroup.LayoutParams(ViewGroup
                        .LayoutParams.MATCH_PARENT, DisplayUtil.dpToPx(150f).toInt())
                })
        b.llParent.addView(
                BitmapShaderHeadView(requireContext()).apply {
                    layoutParams = ViewGroup.LayoutParams(DisplayUtil.dpToPx(100f).toInt()
                            , DisplayUtil.dpToPx(100f).toInt())
                })
        b.llParent.addView(
                LinearGradientView(requireContext()).apply {
                    layoutParams = ViewGroup.LayoutParams(DisplayUtil.dpToPx(100f).toInt()
                            , DisplayUtil.dpToPx(100f).toInt())
                })
        b.llParent.addView(
                RadialGradientView(requireContext()).apply {
                    layoutParams = ViewGroup.LayoutParams(DisplayUtil.dpToPx(100f).toInt()
                            , DisplayUtil.dpToPx(100f).toInt())
                })
    }
}